package com.tm.util;

import java.io.IOException;
import java.util.Properties;

/**
 * 单例设计模式实现该类
 * 在整个项目运行过程中，最多值需要一个Env对象实例
 *  该类继承自Properties类，Properties类可以进行流文件的存储和获取
 *      键值对方式写入或者存储数据
 *      键值对的写入和获取都可以通过key来进行对应的操作
 *      Properties类的load（）加载方法可以动态加载指定的Properties配置文件
 *      可以通过Properties的getProperties（key）来获取该key对应的值value
 *      可以更好的实现跨平台操作
 *      因为io流修改之后重新加载即可生效，而java文件需要重新编译生成罪行的字节码文件后才能使用
 *
 *      单例设计模式特点:
 *          构造器必须私有化
 *          必须提供一个公有的静态的返回值为当前类型的一个方法
 */
public class Env extends Properties {

    private static Env instance = null;

    private Env(){
        try {
            load(getClass().getResourceAsStream("/db.properties"));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    public static Env getInstance(){

        if(instance == null){
            instance = new Env();
        }

        return instance;
    }
}
